package com.ruoyi.web.lambda;

/**
 * @Program: RuoYi-Vue-chy->MyStringDemo
 * @Description: 引用类的实例方法
 * @Author: hongyu.chen
 * @Date: 2025-03-07 21:31
 * @Version： 1.0
 **/
/*
定义一个接口(MyString)，里面定义一个抽象方法:
    String mySubString(String s,int x,int y);
定义一个测试类(MyStringDemio)，在测试类中提供两个方法
    一个方法是:useMyString(MyString my)
    一个方法是主方法，在主方法中调用useMyString方法
 */
public class MyStringDemo {
    public static void main(String[] args) {

        useMyString((String s,int x,int y) -> {
            return s.substring(x,y);
        });

        System.out.println("------------------------------11");

        useMyString((s,x,y) -> s.substring(x,y));

        System.out.println("------------------------------22");

        //引用类中的实例方法
        useMyString(String::substring);

        //lambda表达式被类的实例方法替代的时候
        //第一个参数作为调用者
        //后面的参数全部传递给该方法作为参数
    }

    public static void useMyString(MyString my){
        String s = my.mySubString("Hello World",2,5);
        System.out.println(s);
    }
}
